home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 October: Mac OS SDK / Dev.CD Oct 00 SDK1.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / ATSUnicode.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  35.2 KB  |  1,055 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        ATSUnicode.h
  3.  
  4.      Contains:    Public interfaces for Apple Type Services for Unicode Imaging
  5.  
  6.      Version:    Technology:    Mac OS 9
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1997-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __ATSUNICODE__
  18. #define __ATSUNICODE__
  19.  
  20. #ifndef __ATSLAYOUTTYPES__
  21.     #include <ATSLayoutTypes.h>
  22. #endif
  23.  
  24. #ifndef __SFNTLAYOUTTYPES__
  25.     #include <SFNTLayoutTypes.h>
  26. #endif
  27.  
  28. #ifndef __MACTYPES__
  29.     #include <MacTypes.h>
  30. #endif
  31.  
  32. #ifndef __MACMEMORY__
  33.     #include <MacMemory.h>
  34. #endif
  35.  
  36. #ifndef __FONTS__
  37.     #include <Fonts.h>
  38. #endif
  39.  
  40. #ifndef __QUICKDRAW__
  41.     #include <Quickdraw.h>
  42. #endif
  43.  
  44. #ifndef __TEXTCOMMON__
  45.     #include <TextCommon.h>
  46. #endif
  47.  
  48. #ifndef __MACERRORS__
  49.     #include <MacErrors.h>
  50. #endif
  51.  
  52.  
  53.  
  54.  
  55. #if PRAGMA_ONCE
  56. #pragma once
  57. #endif
  58.  
  59. #ifdef __cplusplus
  60. extern "C" {
  61. #endif
  62.  
  63. #if PRAGMA_IMPORT
  64. #pragma import on
  65. #endif
  66.  
  67. #if PRAGMA_STRUCT_ALIGN
  68.     #pragma options align=mac68k
  69. #elif PRAGMA_STRUCT_PACKPUSH
  70.     #pragma pack(push, 2)
  71. #elif PRAGMA_STRUCT_PACK
  72.     #pragma pack(2)
  73. #endif
  74.  
  75. /************/
  76. /*    Types    */
  77. /************/
  78. /*
  79.    UniCharArrayHandle and UniCharArrayOffset are defined in the
  80.    TextCommon interface file.
  81. */
  82.  
  83. /*
  84.       ATSUTextMeasurement is specific to ATSUI in that measurement
  85.       quantities are in fractional Fixed format instead of shorts
  86.       used in QuickDraw Text.  This provides exact outline metrics and
  87.       line specifications such as line width, ascent, descent, and so on.  
  88. */
  89.  
  90. typedef Fixed                             ATSUTextMeasurement;
  91. /*
  92.       ATSUFontID indicates a particular font family and face.  
  93.       ATSUFontID's are not guaranteed to remain constant across 
  94.       reboots.  Clients should use the font's unique name to 
  95.       get a font token to store in documents which is 
  96.       guaranteed to remain constant across reboots. 
  97. */
  98. typedef FMFont                             ATSUFontID;
  99. /*
  100.       ATSUFontFeatureType and ATSUFontFeatureSelector are used 
  101.       to identify font features.  
  102. */
  103. typedef UInt16                             ATSUFontFeatureType;
  104. typedef UInt16                             ATSUFontFeatureSelector;
  105. /*
  106.       ATSUFontVariationAxis and ATSUFontVariationValue are used 
  107.       in connection with font variations.  
  108. */
  109. typedef FourCharCode                     ATSUFontVariationAxis;
  110. typedef Fixed                             ATSUFontVariationValue;
  111. /*
  112.       ATSUTextLayout is used to store the attribute information 
  113.       associated with a contiguous block of UniChar's (UInt16's) 
  114.       in memory.  It's typed to be an opaque structure.  
  115. */
  116.  
  117. typedef struct OpaqueATSUTextLayout*     ATSUTextLayout;
  118. /*
  119.       ATSUStyle is used to store a set of individual attributes, 
  120.       font features, and font variations.  It's typed to be 
  121.       an opaque structure.  
  122. */
  123. typedef struct OpaqueATSUStyle*         ATSUStyle;
  124. /*
  125.       ATSUAttributeTag is used to indicate the particular type 
  126.       of attribute under consideration:  font, size, color, 
  127.       and so on.  
  128.       Each style run may have at most one attribute with a 
  129.       given ATSUAttributeTag (i.e., a style run can't have 
  130.       more than one font or size) but may have none.  
  131. */
  132. typedef UInt32                             ATSUAttributeTag;
  133. /*
  134.       ATSUAttributeValuePtr is used to provide generic access 
  135.       to storage of attribute values, which vary in size.
  136. */
  137. typedef void *                            ATSUAttributeValuePtr;
  138. /*
  139.       ATSUAttributeInfo is used to provide a tag/size pairing.  
  140.       This makes it possible to provide the client information   
  141.       about all the attributes for a given range of text.  This   
  142.       structure is only used to return to the client information   
  143.       about a complete set of attributes.  An array of   
  144.       ATSUAttributeInfos is passed as a parameter so that the   
  145.       client can find out what attributes are set and what their   
  146.       individual sizes are; with that information, they can then   
  147.       query about the values of the attributes they're interested   
  148.       in.  Because arrays of ATSUAttributeInfos are used as parameters   
  149.       to functions, they have to be of a fixed size, hence the   
  150.       value is not included in the structure.  
  151. */
  152.  
  153. struct ATSUAttributeInfo {
  154.     ATSUAttributeTag                 fTag;
  155.     ByteCount                         fValueSize;
  156. };
  157. typedef struct ATSUAttributeInfo        ATSUAttributeInfo;
  158. /*
  159.       ATSUCaret contains the complete information needed to render a
  160.       caret.  fX and fY is the position of one of the caret's ends
  161.       relative to the origin position of the line the caret belongs.
  162.       fDeltaX and fDeltaY is the position of the caret's other end.
  163.       Hence, to draw a caret, simply call MoveTo(fX, fY) followed by
  164.       LineTo(fDeltaX, fDeltaY) or equivalent.  The ATSUCaret will
  165.       contain the positions needed to draw carets on angled lines
  166.       and reflect angled carets and leading/trailing split caret
  167.       appearances.
  168. */
  169.  
  170. struct ATSUCaret {
  171.     Fixed                             fX;
  172.     Fixed                             fY;
  173.     Fixed                             fDeltaX;
  174.     Fixed                             fDeltaY;
  175. };
  176. typedef struct ATSUCaret                ATSUCaret;
  177. /*
  178.       ATSUCursorMovementType currently can take three values 
  179.       (kATSUByCharacter, kATSUByCluster, and kATSUByWord) 
  180.       and is used to indicate how much to move the cursor.  
  181. */
  182.  
  183. typedef UInt16                             ATSUCursorMovementType;
  184. /*
  185.       ATSUVerticalCharacterType currently can take two values 
  186.       (kATSUStronglyVertical, and kATSUStronglyHorizontal) and 
  187.       is used to indicate whether text is to be laid out as 
  188.       vertical glyphs or horizontal glyphs.  
  189. */
  190. typedef UInt16                             ATSUVerticalCharacterType;
  191. /*
  192.       ATSUStyleComparison is an enumeration with four values 
  193.       (kATUStyleUnequal, ATSUStyleContains, kATSUStyleEquals, 
  194.       and kATSUStyleContainedBy), and is used by ATSUCompareStyles() 
  195.       to indicate if the first style parameter contains as a 
  196.       proper subset, is equal to, or is contained by the second 
  197.       style parameter.
  198. */
  199. typedef UInt16                             ATSUStyleComparison;
  200. /*
  201.       ATSUFontFallbackMethod type defines the type of heap or memory callback
  202.       method ATSUI is to follow iin all its permanent memory allocations for
  203.       it clients.
  204. */
  205. typedef UInt16                             ATSUFontFallbackMethod;
  206. /*
  207.       ATSUMemoryCallbacks is a union struct that allows the ATSUI 
  208.       client to specify a specific heap for ATSUI use or allocation
  209.       callbacks of which ATSUI is to use each time ATSUI performs a
  210.       memory operation (alloc, grow, free).
  211. */
  212. typedef CALLBACK_API_C( void *, ATSUCustomAllocFunc )(void *refCon, ByteCount howMuch);
  213. typedef CALLBACK_API_C( void , ATSUCustomFreeFunc )(void *refCon, void *doomedBlock);
  214. typedef CALLBACK_API_C( void *, ATSUCustomGrowFunc )(void *refCon, void *oldBlock, ByteCount oldSize, ByteCount newSize);
  215.  
  216. union ATSUMemoryCallbacks {
  217.     struct {
  218.         ATSUCustomAllocFunc             Alloc;
  219.         ATSUCustomFreeFunc                 Free;
  220.         ATSUCustomGrowFunc                 Grow;
  221.         void *                            memoryRefCon;
  222.     }                                 callbacks;
  223.  
  224.     THz                             heapToUse;
  225. };
  226. typedef union ATSUMemoryCallbacks        ATSUMemoryCallbacks;
  227. /*
  228.       ATSUHeapSpec provides allows the ATSUI client a means of
  229.       specifying the heap ATSUI should allocate it's dynamic memory
  230.       from or that ATSUI should use the memory callback provided by
  231.       the client.
  232. */
  233.  
  234. typedef UInt16                             ATSUHeapSpec;
  235. /*
  236.       ATSUMemorySetting is used to store the results from a ATSUSetMemoryAlloc
  237.       or a ATSUGetCurrentMemorySetting call.  It can also be used to change the
  238.       current ATSUMemorySetting by passing it into the ATSUSetCurrentMemorySetting
  239.       call.
  240. */
  241. typedef struct OpaqueATSUMemorySetting*  ATSUMemorySetting;
  242. /*******************************************************************************/
  243. /*    ATSUI Attribute tags:  Apple reserves values 0 to 65,535 (0 to 0x0000FFFF) */
  244. /*    ATSUI clients may create their own tags with any other value               */
  245. /*******************************************************************************/
  246. /*    Line Control Attribute Tags */
  247. enum {
  248.     kATSULineWidthTag            = 1L,                            /*    Type:            ATSUTextMeasurement*/
  249.                                                                 /*    Default value:    0*/
  250.     kATSULineRotationTag        = 2L,                            /*    Type:            Fixed (fixed value in degrees in right-handed coordinate system)*/
  251.                                                                 /*    Default value:    0*/
  252.     kATSULineDirectionTag        = 3L,                            /*    Type:            Boolean; values 0 or 1 (see below for value identities)*/
  253.                                                                 /*    Default value:    GetSysDirection() ? kATSURightToLeftBaseDirection : kATSULeftToRightBaseDirection*/
  254.     kATSULineJustificationFactorTag = 4L,                        /*    Type:            Fract between 0 and 1*/
  255.                                                                 /*    Default value:    kATSUNoJustification*/
  256.     kATSULineFlushFactorTag        = 5L,                            /*    Type:            Fract between 0 and 1 */
  257.                                                                 /*    Default value:    kATSUStartAlignment*/
  258.     kATSULineBaselineValuesTag    = 6L,                            /*    Type:            BslnBaselineRecord*/
  259.                                                                 /*    Default value:    All zeros.  Calculated from other style attributes (e.g., font and point size)*/
  260.     kATSULineLayoutOptionsTag    = 7L,                            /*    Type:            UInt32*/
  261.                                                                 /*    Default value:    kATSLineNoLayoutOptions - other options listed in ATSLayoutTypes.h*/
  262.     kATSULineAscentTag            = 8L,                            /*    Type:            ATSUTextMeasurement*/
  263.                                                                 /*    Default value:    kATSUseLineHeight*/
  264.     kATSULineDescentTag            = 9L,                            /*    Type:            ATSUTextMeasurement*/
  265.                                                                 /*    Default value:    kATSUseLineHeight*/
  266.     kATSULineLanguageTag        = 10L,                            /*    Type:            RegionCode - region values listed in script.h interface file*/
  267.                                                                 /*    Default value:    kTextRegionDontCare*/
  268.     kATSULineTextLocatorTag        = 11L,                            /*    Type:            TextBreakLocatorRef*/
  269.                                                                 /*    Default value:    NULL - set Region derived locator or the default Text Utilities locator*/
  270.     kATSUMaxLineTag                = 12L                            /*    This is just for convenience - the upper limit of the ATSUTextLayout attribute tags */
  271. };
  272.  
  273. /*    Run Style Attribute Tags */
  274. enum {
  275.                                                                 /* QuickDraw compatibility tags */
  276.     kATSUQDBoldfaceTag            = 256L,                            /*    Type:            Boolean    */
  277.                                                                 /*    Default value:    false*/
  278.     kATSUQDItalicTag            = 257L,                            /*    Type:            Boolean        */
  279.                                                                 /*    Default value:    false*/
  280.     kATSUQDUnderlineTag            = 258L,                            /*    Type:            Boolean    */
  281.                                                                 /*    Default value:    false*/
  282.     kATSUQDCondensedTag            = 259L,                            /*    Type:            Boolean    */
  283.                                                                 /*    Default value:    false*/
  284.     kATSUQDExtendedTag            = 260L,                            /*    Type:            Boolean    */
  285.                                                                 /*    Default value:    false*/
  286.                                                                 /* Common run tags */
  287.     kATSUFontTag                = 261L,                            /*    Type:            ATSUFontID    */
  288.                                                                 /*    Default value:    GetScriptVariable( smSystemScript, smScriptAppFond )*/
  289.     kATSUSizeTag                = 262L,                            /*    Type:            Fixed    */
  290.                                                                 /*    Default value:    GetScriptVariable( smSystemScript, smScriptAppFondSize )    */
  291.     kATSUColorTag                = 263L,                            /*    Type:            RGBColor    */
  292.                                                                 /*    Default value:    (0, 0, 0)*/
  293.                                                                 /*    Less common run tags */
  294.     kATSULanguageTag            = 264L,                            /*    Type:            RegionCode - region values listed in script.h interface file*/
  295.                                                                 /*    Default value:    GetScriptManagerVariable( smRegionCode )*/
  296.     kATSUVerticalCharacterTag    = 265L,                            /*    Type:            ATSUVerticalCharacterType    */
  297.                                                                 /*    Default value:    kATSUStronglyHorizontal*/
  298.     kATSUImposeWidthTag            = 266L,                            /*    Type:            ATSUTextMeasurement*/
  299.                                                                 /*    Default value:    all glyphs use their own font defined advance widths*/
  300.     kATSUBeforeWithStreamShiftTag = 267L,                        /*    Type:            Fixed*/
  301.                                                                 /*    Default value:    0*/
  302.     kATSUAfterWithStreamShiftTag = 268L,                        /*    Type:            Fixed*/
  303.                                                                 /*    Default value:    0*/
  304.     kATSUCrossStreamShiftTag    = 269L,                            /*    Type:            Fixed*/
  305.                                                                 /*    Default value:    0*/
  306.     kATSUTrackingTag            = 270L,                            /*    Type:            Fixed*/
  307.                                                                 /*    Default value:    kATSNoTracking*/
  308.     kATSUHangingInhibitFactorTag = 271L,                        /*    Type:            Fract between 0 and 1*/
  309.                                                                 /*    Default value:    0*/
  310.     kATSUKerningInhibitFactorTag = 272L,                        /*    Type:            Fract between 0 and 1*/
  311.                                                                 /*    Default value:    0*/
  312.     kATSUDecompositionFactorTag    = 273L,                            /*    Type:            Fixed (-1.0 -> 1.0)*/
  313.                                                                 /*    Default value:    0*/
  314.     kATSUBaselineClassTag        = 274L,                            /*    Type:            BslnBaselineClass  (see SFNTLayoutTypes.h)*/
  315.                                                                 /*    Default value:    kBSLNRomanBaseline - set to kBSLNNoBaselineOverride to use intrinsic baselines*/
  316.     kATSUPriorityJustOverrideTag = 275L,                        /*    Type:            ATSJustPriorityWidthDeltaOverrides (see ATSLayoutTypes.h)*/
  317.                                                                 /*    Default value:    all zeros*/
  318.     kATSUNoLigatureSplitTag        = 276L,                            /*    Type:            Boolean*/
  319.                                                                 /*    Default value:    false - ligatures and compound characters have divisable components.*/
  320.     kATSUNoCaretAngleTag        = 277L,                            /*    Type:            Boolean*/
  321.                                                                 /*    Default value:    false - use the character's angularity to determine its boundaries*/
  322.     kATSUSuppressCrossKerningTag = 278L,                        /*    Type:            Boolean*/
  323.                                                                 /*    Default value:    false - do not suppress automatic cross kerning (defined by font)*/
  324.     kATSUNoOpticalAlignmentTag    = 279L,                            /*    Type:            Boolean*/
  325.                                                                 /*    Default value:    false - do not suppress character's automatic optical positional alignment*/
  326.     kATSUForceHangingTag        = 280L,                            /*    Type:            Boolean*/
  327.                                                                 /*    Default value:    false - do not force the character's to hang beyond the line boundaries*/
  328.     kATSUNoSpecialJustificationTag = 281L,                        /*    Type:            Boolean*/
  329.                                                                 /*    Default value:    false - perform post-compensation justification if needed*/
  330.     kATSUStyleTextLocatorTag    = 282L,                            /*    Type:            TextBreakLocatorRef*/
  331.                                                                 /*    Default value:    NULL - region derived locator or the default Text Utilities locator*/
  332.     kATSUMaxStyleTag            = 283L,                            /*    This is just for convenience - the upper limit of the ATSUStyle attribute tags */
  333.     kATSUMaxATSUITagValue        = 65535L                        /*    This is the maximum Apple ATSUI reserved tag value.  Client defined tags must be larger.*/
  334. };
  335.  
  336. /********************************/
  337. /*    Enumerations and constants    */
  338. /********************************/
  339. /* Cursor movement */
  340. enum {
  341.     kATSUByCharacter            = 0,
  342.     kATSUByCluster                = 1,
  343.     kATSUByWord                    = 2
  344. };
  345.  
  346. /* Vertical text types */
  347. enum {
  348.     kATSUStronglyHorizontal        = 0,
  349.     kATSUStronglyVertical        = 1
  350. };
  351.  
  352. /* Line direction types (used for kATSULineDirectionTag values) */
  353. enum {
  354.     kATSULeftToRightBaseDirection = 0,                            /*    Impose left-to-right or top-to-bottom dominant direction */
  355.     kATSURightToLeftBaseDirection = 1                            /*    Impose right-to-left or bottom-to-top dominant direction */
  356. };
  357.  
  358. /* Style comparison types */
  359. enum {
  360.     kATSUStyleUnequal            = 0,
  361.     kATSUStyleContains            = 1,
  362.     kATSUStyleEquals            = 2,
  363.     kATSUStyleContainedBy        = 3
  364. };
  365.  
  366. /* Font Fallback methods */
  367. enum {
  368.     kATSUDefaultFontFallbacks    = 0,
  369.     kATSULastResortOnlyFallback    = 1,
  370.     kATSUSequentialFallbacksPreferred = 2,
  371.     kATSUSequentialFallbacksExclusive = 3
  372. };
  373.  
  374. /* ATSUI heap or memory allocation specifiers (of type ATSUHeapSpec) */
  375. enum {
  376.     kATSUUseCurrentHeap            = 0,
  377.     kATSUUseAppHeap                = 1,
  378.     kATSUUseSpecificHeap        = 2,
  379.     kATSUUseCallbacks            = 3
  380. };
  381.  
  382. /* LineFlushFactor convenience defined values */
  383. #define kATSUStartAlignment            ((Fract) 0x00000000L)
  384. #define kATSUEndAlignment            ((Fract) 0x40000000L)
  385. #define kATSUCenterAlignment        ((Fract) 0x20000000L)
  386. /* LineJustificationFactor convenience defined values */
  387. #define kATSUNoJustification        ((Fract) 0x00000000L)
  388. #define kATSUFullJustification        ((Fract) 0x40000000L)
  389. /* Other constants    */
  390. enum {
  391.     kATSUInvalidFontID            = 0
  392. };
  393.  
  394.  
  395. enum {
  396.     kATSUUseLineControlWidth    = 0x7FFFFFFF
  397. };
  398.  
  399.  
  400. enum {
  401.     kATSUNoSelector                = 0x0000FFFF
  402. };
  403.  
  404.  
  405. enum {
  406.     kATSUUseGrafPortPenLoc        = (long)0xFFFFFFFF,
  407.     kATSUClearAll                = (long)0xFFFFFFFF
  408. };
  409.  
  410.  
  411. enum {
  412.     kATSUFromTextBeginning        = (long)0xFFFFFFFF,
  413.     kATSUToTextEnd                = (long)0xFFFFFFFF
  414. };
  415.  
  416.  
  417. /****************/
  418. /*    Functions    */
  419. /****************/
  420.  
  421. /*    Clipboard support, flattened style version 0 (is is advised to not use these routines and perform your own flattening)    */
  422. EXTERN_API_C( OSStatus )
  423. ATSUCopyToHandle                (ATSUStyle                 iStyle,
  424.                                  Handle                 oStyleHandle);
  425.  
  426. EXTERN_API_C( OSStatus )
  427. ATSUPasteFromHandle                (ATSUStyle                 iStyle,
  428.                                  Handle                 iStyleHandle);
  429.  
  430. /*    Memory allocation specification functions    */
  431. EXTERN_API_C( OSStatus )
  432. ATSUCreateMemorySetting            (ATSUHeapSpec             iHeapSpec,
  433.                                  ATSUMemoryCallbacks *    iMemoryCallbacks,
  434.                                  ATSUMemorySetting *    oMemorySetting);
  435.  
  436. EXTERN_API_C( OSStatus )
  437. ATSUSetCurrentMemorySetting        (ATSUMemorySetting         iMemorySetting);
  438.  
  439. EXTERN_API_C( ATSUMemorySetting )
  440. ATSUGetCurrentMemorySetting        (void);
  441.  
  442. EXTERN_API_C( OSStatus )
  443. ATSUDisposeMemorySetting        (ATSUMemorySetting         iMemorySetting);
  444.  
  445. /*    Basic style functions    */
  446. EXTERN_API_C( OSStatus )
  447. ATSUCreateStyle                    (ATSUStyle *            oStyle);
  448.  
  449. EXTERN_API_C( OSStatus )
  450. ATSUCreateAndCopyStyle            (ATSUStyle                 iStyle,
  451.                                  ATSUStyle *            oStyle);
  452.  
  453. EXTERN_API_C( OSStatus )
  454. ATSUDisposeStyle                (ATSUStyle                 iStyle);
  455.  
  456. EXTERN_API_C( OSStatus )
  457. ATSUSetStyleRefCon                (ATSUStyle                 iStyle,
  458.                                  UInt32                 iRefCon);
  459.  
  460. EXTERN_API_C( OSStatus )
  461. ATSUGetStyleRefCon                (ATSUStyle                 iStyle,
  462.                                  UInt32 *                oRefCon);
  463.  
  464. /*    Style comparison         */
  465. EXTERN_API_C( OSStatus )
  466. ATSUCompareStyles                (ATSUStyle                 iFirstStyle,
  467.                                  ATSUStyle                 iSecondStyle,
  468.                                  ATSUStyleComparison *    oComparison);
  469.  
  470. /*    Attribute manipulations    */
  471. EXTERN_API_C( OSStatus )
  472. ATSUCopyAttributes                (ATSUStyle                 iSourceStyle,
  473.                                  ATSUStyle                 iDestinationStyle);
  474.  
  475. EXTERN_API_C( OSStatus )
  476. ATSUOverwriteAttributes            (ATSUStyle                 iSourceStyle,
  477.                                  ATSUStyle                 iDestinationStyle);
  478.  
  479. EXTERN_API_C( OSStatus )
  480. ATSUUnderwriteAttributes        (ATSUStyle                 iSourceStyle,
  481.                                  ATSUStyle                 iDestinationStyle);
  482.  
  483. /*    Empty styles    */
  484. EXTERN_API_C( OSStatus )
  485. ATSUClearStyle                    (ATSUStyle                 iStyle);
  486.  
  487. EXTERN_API_C( OSStatus )
  488. ATSUStyleIsEmpty                (ATSUStyle                 iStyle,
  489.                                  Boolean *                oIsClear);
  490.  
  491. /*    Get and set attributes */
  492. EXTERN_API_C( OSStatus )
  493. ATSUCalculateBaselineDeltas        (ATSUStyle                 iStyle,
  494.                                  BslnBaselineClass         iBaselineClass,
  495.                                  BslnBaselineRecord     oBaselineDeltas);
  496.  
  497. EXTERN_API_C( OSStatus )
  498. ATSUSetAttributes                (ATSUStyle                 iStyle,
  499.                                  ItemCount                 iAttributeCount,
  500.                                  ATSUAttributeTag         iTag[],
  501.                                  ByteCount                 iValueSize[],
  502.                                  ATSUAttributeValuePtr     iValue[]);
  503.  
  504. EXTERN_API_C( OSStatus )
  505. ATSUGetAttribute                (ATSUStyle                 iStyle,
  506.                                  ATSUAttributeTag         iTag,
  507.                                  ByteCount                 iExpectedValueSize,
  508.                                  ATSUAttributeValuePtr     oValue,
  509.                                  ByteCount *            oActualValueSize);
  510.  
  511. EXTERN_API_C( OSStatus )
  512. ATSUGetAllAttributes            (ATSUStyle                 iStyle,
  513.                                  ATSUAttributeInfo         oAttributeInfoArray[],
  514.                                  ItemCount                 iTagValuePairArraySize,
  515.                                  ItemCount *            oTagValuePairCount);
  516.  
  517. EXTERN_API_C( OSStatus )
  518. ATSUClearAttributes                (ATSUStyle                 iStyle,
  519.                                  ItemCount                 iTagCount,
  520.                                  ATSUAttributeTag         iTag[]);
  521.  
  522. /*    Font features    */
  523. EXTERN_API_C( OSStatus )
  524. ATSUSetFontFeatures                (ATSUStyle                 iStyle,
  525.                                  ItemCount                 iFeatureCount,
  526.                                  ATSUFontFeatureType     iType[],
  527.                                  ATSUFontFeatureSelector  iSelector[]);
  528.  
  529. EXTERN_API_C( OSStatus )
  530. ATSUGetFontFeature                (ATSUStyle                 iStyle,
  531.                                  ItemCount                 iFeatureIndex,
  532.                                  ATSUFontFeatureType *    oFeatureType,
  533.                                  ATSUFontFeatureSelector * oFeatureSelector);
  534.  
  535. EXTERN_API_C( OSStatus )
  536. ATSUGetAllFontFeatures            (ATSUStyle                 iStyle,
  537.                                  ItemCount                 iMaximumFeatureCount,
  538.                                  ATSUFontFeatureType     oFeatureType[],
  539.                                  ATSUFontFeatureSelector  oFeatureSelector[],
  540.                                  ItemCount *            oActualFeatureCount);
  541.  
  542. EXTERN_API_C( OSStatus )
  543. ATSUClearFontFeatures            (ATSUStyle                 iStyle,
  544.                                  ItemCount                 iFeatureCount,
  545.                                  ATSUFontFeatureType     iType[],
  546.                                  ATSUFontFeatureSelector  iSelector[]);
  547.  
  548. /*    Font variations    */
  549. EXTERN_API_C( OSStatus )
  550. ATSUSetVariations                (ATSUStyle                 iStyle,
  551.                                  ItemCount                 iVariationCount,
  552.                                  ATSUFontVariationAxis     iAxes[],
  553.                                  ATSUFontVariationValue  iValue[]);
  554.  
  555. EXTERN_API_C( OSStatus )
  556. ATSUGetFontVariationValue        (ATSUStyle                 iStyle,
  557.                                  ATSUFontVariationAxis     iFontVariationAxis,
  558.                                  ATSUFontVariationValue * oFontVariationValue);
  559.  
  560. EXTERN_API_C( OSStatus )
  561. ATSUGetAllFontVariations        (ATSUStyle                 iStyle,
  562.                                  ItemCount                 iVariationCount,
  563.                                  ATSUFontVariationAxis     oVariationAxes[],
  564.                                  ATSUFontVariationValue  oFontVariationValues[],
  565.                                  ItemCount *            oActualVariationCount);
  566.  
  567. EXTERN_API_C( OSStatus )
  568. ATSUClearFontVariations            (ATSUStyle                 iStyle,
  569.                                  ItemCount                 iAxisCount,
  570.                                  ATSUFontVariationAxis     iAxis[]);
  571.  
  572. /*    Basic text-layout functions    */
  573. EXTERN_API_C( OSStatus )
  574. ATSUCreateTextLayout            (ATSUTextLayout *        oTextLayout);
  575.  
  576. EXTERN_API_C( OSStatus )
  577. ATSUCreateAndCopyTextLayout        (ATSUTextLayout         iTextLayout,
  578.                                  ATSUTextLayout *        oTextLayout);
  579.  
  580. EXTERN_API_C( OSStatus )
  581. ATSUCreateTextLayoutWithTextPtr    (ConstUniCharArrayPtr     iText,
  582.                                  UniCharArrayOffset     iTextOffset,
  583.                                  UniCharCount             iTextLength,
  584.                                  UniCharCount             iTextTotalLength,
  585.                                  ItemCount                 iNumberOfRuns,
  586.                                  UniCharCount             iRunLengths[],
  587.                                  ATSUStyle                 iStyles[],
  588.                                  ATSUTextLayout *        oTextLayout);
  589.  
  590. EXTERN_API_C( OSStatus )
  591. ATSUCreateTextLayoutWithTextHandle (UniCharArrayHandle     iText,
  592.                                  UniCharArrayOffset     iTextOffset,
  593.                                  UniCharCount             iTextLength,
  594.                                  UniCharCount             iTextTotalLength,
  595.                                  ItemCount                 iNumberOfRuns,
  596.                                  UniCharCount             iRunLengths[],
  597.                                  ATSUStyle                 iStyles[],
  598.                                  ATSUTextLayout *        oTextLayout);
  599.  
  600. EXTERN_API_C( OSStatus )
  601. ATSUClearLayoutCache            (ATSUTextLayout         iTextLayout,
  602.                                  UniCharArrayOffset     iLineStart);
  603.  
  604. EXTERN_API_C( OSStatus )
  605. ATSUDisposeTextLayout            (ATSUTextLayout         iTextLayout);
  606.  
  607. EXTERN_API_C( OSStatus )
  608. ATSUSetTextLayoutRefCon            (ATSUTextLayout         iTextLayout,
  609.                                  UInt32                 iRefCon);
  610.  
  611. EXTERN_API_C( OSStatus )
  612. ATSUGetTextLayoutRefCon            (ATSUTextLayout         iTextLayout,
  613.                                  UInt32 *                oRefCon);
  614.  
  615. /*    Glyph bounds retrieval    */
  616. EXTERN_API_C( OSStatus )
  617. ATSUGetGlyphBounds                (ATSUTextLayout         iTextLayout,
  618.                                  ATSUTextMeasurement     iTextBasePointX,
  619.                                  ATSUTextMeasurement     iTextBasePointY,
  620.                                  UniCharArrayOffset     iBoundsCharStart,
  621.                                  UniCharCount             iBoundsCharLength,
  622.                                  UInt16                 iTypeOfBounds,
  623.                                  ItemCount                 iMaxNumberOfBounds,
  624.                                  ATSTrapezoid             oGlyphBounds[],
  625.                                  ItemCount *            oActualNumberOfBounds);
  626.  
  627. /*    Idle processing    */
  628. EXTERN_API_C( OSStatus )
  629. ATSUIdle                        (ATSUTextLayout         iTextLayout);
  630.  
  631. /*    Text location    */
  632. EXTERN_API_C( OSStatus )
  633. ATSUSetTextPointerLocation        (ATSUTextLayout         iTextLayout,
  634.                                  ConstUniCharArrayPtr     iText,
  635.                                  UniCharArrayOffset     iTextOffset,
  636.                                  UniCharCount             iTextLength,
  637.                                  UniCharCount             iTextTotalLength);
  638.  
  639. EXTERN_API_C( OSStatus )
  640. ATSUSetTextHandleLocation        (ATSUTextLayout         iTextLayout,
  641.                                  UniCharArrayHandle     iText,
  642.                                  UniCharArrayOffset     iTextOffset,
  643.                                  UniCharCount             iTextLength,
  644.                                  UniCharCount             iTextTotalLength);
  645.  
  646. EXTERN_API_C( OSStatus )
  647. ATSUGetTextLocation                (ATSUTextLayout         iTextLayout,
  648.                                  void **                oText,
  649.                                  Boolean *                oTextIsStoredInHandle,
  650.                                  UniCharArrayOffset *    oOffset,
  651.                                  UniCharCount *            oTextLength,
  652.                                  UniCharCount *            oTextTotalLength);
  653.  
  654. /*    Text manipulation    */
  655. EXTERN_API_C( OSStatus )
  656. ATSUTextDeleted                    (ATSUTextLayout         iTextLayout,
  657.                                  UniCharArrayOffset     iDeletedRangeStart,
  658.                                  UniCharCount             iDeletedRangeLength);
  659.  
  660. EXTERN_API_C( OSStatus )
  661. ATSUTextInserted                (ATSUTextLayout         iTextLayout,
  662.                                  UniCharArrayOffset     iInsertionLocation,
  663.                                  UniCharCount             iInsertionLength);
  664.  
  665. EXTERN_API_C( OSStatus )
  666. ATSUTextMoved                    (ATSUTextLayout         iTextLayout,
  667.                                  ConstUniCharArrayPtr     iNewLocation);
  668.  
  669. /*    Layout controls    */
  670. EXTERN_API_C( OSStatus )
  671. ATSUCopyLayoutControls            (ATSUTextLayout         iSourceTextLayout,
  672.                                  ATSUTextLayout         iDestTextLayout);
  673.  
  674. EXTERN_API_C( OSStatus )
  675. ATSUSetLayoutControls            (ATSUTextLayout         iTextLayout,
  676.                                  ItemCount                 iAttributeCount,
  677.                                  ATSUAttributeTag         iTag[],
  678.                                  ByteCount                 iValueSize[],
  679.                                  ATSUAttributeValuePtr     iValue[]);
  680.  
  681. EXTERN_API_C( OSStatus )
  682. ATSUGetLayoutControl            (ATSUTextLayout         iTextLayout,
  683.                                  ATSUAttributeTag         iTag,
  684.                                  ByteCount                 iExpectedValueSize,
  685.                                  ATSUAttributeValuePtr     oValue,
  686.                                  ByteCount *            oActualValueSize);
  687.  
  688. EXTERN_API_C( OSStatus )
  689. ATSUGetAllLayoutControls        (ATSUTextLayout         iTextLayout,
  690.                                  ATSUAttributeInfo         oAttributeInfoArray[],
  691.                                  ItemCount                 iTagValuePairArraySize,
  692.                                  ItemCount *            oTagValuePairCount);
  693.  
  694. EXTERN_API_C( OSStatus )
  695. ATSUClearLayoutControls            (ATSUTextLayout         iTextLayout,
  696.                                  ItemCount                 iTagCount,
  697.                                  ATSUAttributeTag         iTag[]);
  698.  
  699. /*    Single line layout controls    */
  700. EXTERN_API_C( OSStatus )
  701. ATSUCopyLineControls            (ATSUTextLayout         iSourceTextLayout,
  702.                                  UniCharArrayOffset     iSourceLineStart,
  703.                                  ATSUTextLayout         iDestTextLayout,
  704.                                  UniCharArrayOffset     iDestLineStart);
  705.  
  706. EXTERN_API_C( OSStatus )
  707. ATSUSetLineControls                (ATSUTextLayout         iTextLayout,
  708.                                  UniCharArrayOffset     iLineStart,
  709.                                  ItemCount                 iAttributeCount,
  710.                                  ATSUAttributeTag         iTag[],
  711.                                  ByteCount                 iValueSize[],
  712.                                  ATSUAttributeValuePtr     iValue[]);
  713.  
  714. EXTERN_API_C( OSStatus )
  715. ATSUGetLineControl                (ATSUTextLayout         iTextLayout,
  716.                                  UniCharArrayOffset     iLineStart,
  717.                                  ATSUAttributeTag         iTag,
  718.                                  ByteCount                 iExpectedValueSize,
  719.                                  ATSUAttributeValuePtr     oValue,
  720.                                  ByteCount *            oActualValueSize);
  721.  
  722. EXTERN_API_C( OSStatus )
  723. ATSUGetAllLineControls            (ATSUTextLayout         iTextLayout,
  724.                                  UniCharArrayOffset     iLineStart,
  725.                                  ATSUAttributeInfo         oAttributeInfoArray[],
  726.                                  ItemCount                 iTagValuePairArraySize,
  727.                                  ItemCount *            oTagValuePairCount);
  728.  
  729. EXTERN_API_C( OSStatus )
  730. ATSUClearLineControls            (ATSUTextLayout         iTextLayout,
  731.                                  UniCharArrayOffset     iLineStart,
  732.                                  ItemCount                 iTagCount,
  733.                                  ATSUAttributeTag         iTag[]);
  734.  
  735. /*    Style run processing    */
  736. EXTERN_API_C( OSStatus )
  737. ATSUSetRunStyle                    (ATSUTextLayout         iTextLayout,
  738.                                  ATSUStyle                 iStyle,
  739.                                  UniCharArrayOffset     iRunStart,
  740.                                  UniCharCount             iRunLength);
  741.  
  742. EXTERN_API_C( OSStatus )
  743. ATSUGetRunStyle                    (ATSUTextLayout         iTextLayout,
  744.                                  UniCharArrayOffset     iOffset,
  745.                                  ATSUStyle *            oStyle,
  746.                                  UniCharArrayOffset *    oRunStart,
  747.                                  UniCharCount *            oRunLength);
  748.  
  749. EXTERN_API_C( OSStatus )
  750. ATSUGetContinuousAttributes        (ATSUTextLayout         iTextLayout,
  751.                                  UniCharArrayOffset     iOffset,
  752.                                  UniCharCount             iLength,
  753.                                  ATSUStyle                 oStyle);
  754.  
  755. /*    Drawing and measuring    */
  756. EXTERN_API_C( OSStatus )
  757. ATSUDrawText                    (ATSUTextLayout         iTextLayout,
  758.                                  UniCharArrayOffset     iLineOffset,
  759.                                  UniCharCount             iLineLength,
  760.                                  ATSUTextMeasurement     iLocationX,
  761.                                  ATSUTextMeasurement     iLocationY);
  762.  
  763. EXTERN_API_C( OSStatus )
  764. ATSUMeasureText                    (ATSUTextLayout         iTextLayout,
  765.                                  UniCharArrayOffset     iLineStart,
  766.                                  UniCharCount             iLineLength,
  767.                                  ATSUTextMeasurement *    oTextBefore,
  768.                                  ATSUTextMeasurement *    oTextAfter,
  769.                                  ATSUTextMeasurement *    oAscent,
  770.                                  ATSUTextMeasurement *    oDescent);
  771.  
  772. EXTERN_API_C( OSStatus )
  773. ATSUMeasureTextImage            (ATSUTextLayout         iTextLayout,
  774.                                  UniCharArrayOffset     iLineOffset,
  775.                                  UniCharCount             iLineLength,
  776.                                  ATSUTextMeasurement     iLocationX,
  777.                                  ATSUTextMeasurement     iLocationY,
  778.                                  Rect *                    oTextImageRect);
  779.  
  780. /*    Highlighting    */
  781. EXTERN_API_C( OSStatus )
  782. ATSUHighlightText                (ATSUTextLayout         iTextLayout,
  783.                                  ATSUTextMeasurement     iTextBasePointX,
  784.                                  ATSUTextMeasurement     iTextBasePointY,
  785.                                  UniCharArrayOffset     iHighlightStart,
  786.                                  UniCharCount             iHighlightLength);
  787.  
  788. EXTERN_API_C( OSStatus )
  789. ATSUUnhighlightText                (ATSUTextLayout         iTextLayout,
  790.                                  ATSUTextMeasurement     iTextBasePointX,
  791.                                  ATSUTextMeasurement     iTextBasePointY,
  792.                                  UniCharArrayOffset     iHighlightStart,
  793.                                  UniCharCount             iHighlightLength);
  794.  
  795. EXTERN_API_C( OSStatus )
  796. ATSUGetTextHighlight            (ATSUTextLayout         iTextLayout,
  797.                                  ATSUTextMeasurement     iTextBasePointX,
  798.                                  ATSUTextMeasurement     iTextBasePointY,
  799.                                  UniCharArrayOffset     iHighlightStart,
  800.                                  UniCharCount             iHighlightLength,
  801.                                  RgnHandle                 oHighlightRegion);
  802.  
  803. /*    Hit-testing    */
  804. EXTERN_API_C( OSStatus )
  805. ATSUPositionToOffset            (ATSUTextLayout         iTextLayout,
  806.                                  ATSUTextMeasurement     iLocationX,
  807.                                  ATSUTextMeasurement     iLocationY,
  808.                                  UniCharArrayOffset *    ioPrimaryOffset,
  809.                                  Boolean *                oIsLeading,
  810.                                  UniCharArrayOffset *    oSecondaryOffset);
  811.  
  812. EXTERN_API_C( OSStatus )
  813. ATSUOffsetToPosition            (ATSUTextLayout         iTextLayout,
  814.                                  UniCharArrayOffset     iOffset,
  815.                                  Boolean                 iIsLeading,
  816.                                  ATSUCaret *            oMainCaret,
  817.                                  ATSUCaret *            oSecondCaret,
  818.                                  Boolean *                oCaretIsSplit);
  819.  
  820. /*    Cursor movement    */
  821. EXTERN_API_C( OSStatus )
  822. ATSUNextCursorPosition            (ATSUTextLayout         iTextLayout,
  823.                                  UniCharArrayOffset     iOldOffset,
  824.                                  ATSUCursorMovementType  iMovementType,
  825.                                  UniCharArrayOffset *    oNewOffset);
  826.  
  827. EXTERN_API_C( OSStatus )
  828. ATSUPreviousCursorPosition        (ATSUTextLayout         iTextLayout,
  829.                                  UniCharArrayOffset     iOldOffset,
  830.                                  ATSUCursorMovementType  iMovementType,
  831.                                  UniCharArrayOffset *    oNewOffset);
  832.  
  833. EXTERN_API_C( OSStatus )
  834. ATSURightwardCursorPosition        (ATSUTextLayout         iTextLayout,
  835.                                  UniCharArrayOffset     iOldOffset,
  836.                                  ATSUCursorMovementType  iMovementType,
  837.                                  UniCharArrayOffset *    oNewOffset);
  838.  
  839. EXTERN_API_C( OSStatus )
  840. ATSULeftwardCursorPosition        (ATSUTextLayout         iTextLayout,
  841.                                  UniCharArrayOffset     iOldOffset,
  842.                                  ATSUCursorMovementType  iMovementType,
  843.                                  UniCharArrayOffset *    oNewOffset);
  844.  
  845. /*    Line breaking    */
  846. EXTERN_API_C( OSStatus )
  847. ATSUBreakLine                    (ATSUTextLayout         iTextLayout,
  848.                                  UniCharArrayOffset     iLineStart,
  849.                                  ATSUTextMeasurement     iLineWidth,
  850.                                  Boolean                 iUseAsSoftLineBreak,
  851.                                  UniCharArrayOffset *    oLineBreak);
  852.  
  853. EXTERN_API_C( OSStatus )
  854. ATSUSetSoftLineBreak            (ATSUTextLayout         iTextLayout,
  855.                                  UniCharArrayOffset     iLineBreak);
  856.  
  857. EXTERN_API_C( OSStatus )
  858. ATSUGetSoftLineBreaks            (ATSUTextLayout         iTextLayout,
  859.                                  UniCharArrayOffset     iRangeStart,
  860.                                  UniCharCount             iRangeLength,
  861.                                  ItemCount                 iMaximumBreaks,
  862.                                  UniCharArrayOffset     oBreaks[],
  863.                                  ItemCount *            oBreakCount);
  864.  
  865. EXTERN_API_C( OSStatus )
  866. ATSUClearSoftLineBreaks            (ATSUTextLayout         iTextLayout,
  867.                                  UniCharArrayOffset     iRangeStart,
  868.                                  UniCharCount             iRangeLength);
  869.  
  870. /*    Font matching    */
  871. EXTERN_API_C( OSStatus )
  872. ATSUSetFontFallbacks            (ItemCount                 iFontFallbacksCount,
  873.                                  ATSUFontID             iFontIDs[],
  874.                                  ATSUFontFallbackMethod  iFontFallbackMethod);
  875.  
  876. EXTERN_API_C( OSStatus )
  877. ATSUGetFontFallbacks            (ItemCount                 iMaxFontFallbacksCount,
  878.                                  ATSUFontID             oFontIDs[],
  879.                                  ATSUFontFallbackMethod * oFontFallbackMethod,
  880.                                  ItemCount *            oActualFallbacksCount);
  881.  
  882. EXTERN_API_C( OSStatus )
  883. ATSUMatchFontsToText            (ATSUTextLayout         iTextLayout,
  884.                                  UniCharArrayOffset     iTextStart,
  885.                                  UniCharCount             iTextLength,
  886.                                  ATSUFontID *            oFontID,
  887.                                  UniCharArrayOffset *    oChangedOffset,
  888.                                  UniCharCount *            oChangedLength);
  889.  
  890. EXTERN_API_C( OSStatus )
  891. ATSUSetTransientFontMatching    (ATSUTextLayout         iTextLayout,
  892.                                  Boolean                 iTransientFontMatching);
  893.  
  894. EXTERN_API_C( OSStatus )
  895. ATSUGetTransientFontMatching    (ATSUTextLayout         iTextLayout,
  896.                                  Boolean *                oTransientFontMatching);
  897.  
  898. /*    Font ID's    */
  899. EXTERN_API_C( OSStatus )
  900. ATSUFontCount                    (ItemCount *            oFontCount);
  901.  
  902. EXTERN_API_C( OSStatus )
  903. ATSUGetFontIDs                    (ATSUFontID             oFontIDs[],
  904.                                  ItemCount                 iArraySize,
  905.                                  ItemCount *            oFontCount);
  906.  
  907. EXTERN_API_C( OSStatus )
  908. ATSUFONDtoFontID                (short                     iFONDNumber,
  909.                                  Style                     iFONDStyle,
  910.                                  ATSUFontID *            oFontID);
  911.  
  912. EXTERN_API_C( OSStatus )
  913. ATSUFontIDtoFOND                (ATSUFontID             iFontID,
  914.                                  short *                oFONDNumber,
  915.                                  Style *                oFONDStyle);
  916.  
  917. /*    Font names    */
  918. EXTERN_API_C( OSStatus )
  919. ATSUCountFontNames                (ATSUFontID             iFontID,
  920.                                  ItemCount *            oFontNameCount);
  921.  
  922. EXTERN_API_C( OSStatus )
  923. ATSUGetIndFontName                (ATSUFontID             iFontID,
  924.                                  ItemCount                 iFontNameIndex,
  925.                                  ByteCount                 iMaximumNameLength,
  926.                                  Ptr                     oName,
  927.                                  ByteCount *            oActualNameLength,
  928.                                  FontNameCode *            oFontNameCode,
  929.                                  FontPlatformCode *        oFontNamePlatform,
  930.                                  FontScriptCode *        oFontNameScript,
  931.                                  FontLanguageCode *        oFontNameLanguage);
  932.  
  933. EXTERN_API_C( OSStatus )
  934. ATSUFindFontName                (ATSUFontID             iFontID,
  935.                                  FontNameCode             iFontNameCode,
  936.                                  FontPlatformCode         iFontNamePlatform,
  937.                                  FontScriptCode         iFontNameScript,
  938.                                  FontLanguageCode         iFontNameLanguage,
  939.                                  ByteCount                 iMaximumNameLength,
  940.                                  Ptr                     oName,
  941.                                  ByteCount *            oActualNameLength,
  942.                                  ItemCount *            oFontNameIndex);
  943.  
  944. EXTERN_API_C( OSStatus )
  945. ATSUFindFontFromName            (Ptr                     iName,
  946.                                  ByteCount                 iNameLength,
  947.                                  FontNameCode             iFontNameCode,
  948.                                  FontPlatformCode         iFontNamePlatform,
  949.                                  FontScriptCode         iFontNameScript,
  950.                                  FontLanguageCode         iFontNameLanguage,
  951.                                  ATSUFontID *            oFontID);
  952.  
  953. /*    Font features    */
  954. EXTERN_API_C( OSStatus )
  955. ATSUCountFontFeatureTypes        (ATSUFontID             iFontID,
  956.                                  ItemCount *            oTypeCount);
  957.  
  958. EXTERN_API_C( OSStatus )
  959. ATSUCountFontFeatureSelectors    (ATSUFontID             iFontID,
  960.                                  ATSUFontFeatureType     iType,
  961.                                  ItemCount *            oSelectorCount);
  962.  
  963. EXTERN_API_C( OSStatus )
  964. ATSUGetFontFeatureTypes            (ATSUFontID             iFontID,
  965.                                  ItemCount                 iMaximumTypes,
  966.                                  ATSUFontFeatureType     oTypes[],
  967.                                  ItemCount *            oActualTypeCount);
  968.  
  969. EXTERN_API_C( OSStatus )
  970. ATSUGetFontFeatureSelectors        (ATSUFontID             iFontID,
  971.                                  ATSUFontFeatureType     iType,
  972.                                  ItemCount                 iMaximumSelectors,
  973.                                  ATSUFontFeatureSelector  oSelectors[],
  974.                                  Boolean                 oSelectorIsOnByDefault[],
  975.                                  ItemCount *            oActualSelectorCount,
  976.                                  Boolean *                oIsMutuallyExclusive);
  977.  
  978. EXTERN_API_C( OSStatus )
  979. ATSUGetFontFeatureNameCode        (ATSUFontID             iFontID,
  980.                                  ATSUFontFeatureType     iType,
  981.                                  ATSUFontFeatureSelector  iSelector,
  982.                                  FontNameCode *            oNameCode);
  983.  
  984. /*    Font tracking value & names    */
  985. EXTERN_API_C( OSStatus )
  986. ATSUCountFontTracking            (ATSUFontID             iFontID,
  987.                                  ATSUVerticalCharacterType  iCharacterOrientation,
  988.                                  ItemCount *            oTrackingCount);
  989.  
  990. EXTERN_API_C( OSStatus )
  991. ATSUGetIndFontTracking            (ATSUFontID             iFontID,
  992.                                  ATSUVerticalCharacterType  iCharacterOrientation,
  993.                                  ItemCount                 iTrackIndex,
  994.                                  Fixed *                oFontTrackingValue,
  995.                                  FontNameCode *            oNameCode);
  996.  
  997. /*    Font variations    */
  998. EXTERN_API_C( OSStatus )
  999. ATSUCountFontVariations            (ATSUFontID             iFontID,
  1000.                                  ItemCount *            oVariationCount);
  1001.  
  1002. EXTERN_API_C( OSStatus )
  1003. ATSUGetIndFontVariation            (ATSUFontID             iFontID,
  1004.                                  ItemCount                 iVariationIndex,
  1005.                                  ATSUFontVariationAxis * oATSUFontVariationAxis,
  1006.                                  ATSUFontVariationValue * oMinimumValue,
  1007.                                  ATSUFontVariationValue * oMaximumValue,
  1008.                                  ATSUFontVariationValue * oDefaultValue);
  1009.  
  1010. EXTERN_API_C( OSStatus )
  1011. ATSUGetFontVariationNameCode    (ATSUFontID             iFontID,
  1012.                                  ATSUFontVariationAxis     iAxis,
  1013.                                  FontNameCode *            oNameCode);
  1014.  
  1015. /*    Font Instances    */
  1016. EXTERN_API_C( OSStatus )
  1017. ATSUCountFontInstances            (ATSUFontID             iFontID,
  1018.                                  ItemCount *            oInstances);
  1019.  
  1020. EXTERN_API_C( OSStatus )
  1021. ATSUGetFontInstance                (ATSUFontID             iFontID,
  1022.                                  ItemCount                 iFontInstanceIndex,
  1023.                                  ItemCount                 iMaximumVariations,
  1024.                                  ATSUFontVariationAxis     oAxes[],
  1025.                                  ATSUFontVariationValue  oValues[],
  1026.                                  ItemCount *            oActualVariationCount);
  1027.  
  1028. EXTERN_API_C( OSStatus )
  1029. ATSUGetFontInstanceNameCode        (ATSUFontID             iFontID,
  1030.                                  ItemCount                 iInstanceIndex,
  1031.                                  FontNameCode *            oNameCode);
  1032.  
  1033.  
  1034.  
  1035. #if PRAGMA_STRUCT_ALIGN
  1036.     #pragma options align=reset
  1037. #elif PRAGMA_STRUCT_PACKPUSH
  1038.     #pragma pack(pop)
  1039. #elif PRAGMA_STRUCT_PACK
  1040.     #pragma pack()
  1041. #endif
  1042.  
  1043. #ifdef PRAGMA_IMPORT_OFF
  1044. #pragma import off
  1045. #elif PRAGMA_IMPORT
  1046. #pragma import reset
  1047. #endif
  1048.  
  1049. #ifdef __cplusplus
  1050. }
  1051. #endif
  1052.  
  1053. #endif /* __ATSUNICODE__ */
  1054.  
  1055.